A user interface element may use a background thread to perform costly load operations so that the primary window thread is not blocked and can still process paint events to avoid the appearance of being hung or non-responsive. For example, in a user interface that has multiple pages, some of the pages may need to be populated with information from an external database or some other source. The user interface may spawn background threads to load information in these pages to maintain responsiveness. A program (e.g., a test script or other process) that interacts with the user interface may have no way of knowing when a page has finished loading its data. This may cause the program to fail or report erroneous results.